package com.fly.service;

import com.fly.bean.Circuitry;
import com.fly.bean.Pole;
import com.fly.bean.Task;
//import com.fly.bean.TaskVo;
import com.fly.bean.Users;
import com.fly.util.Page;
import com.fly.vo.*;

import java.util.List;

public interface TaskService {
    //查询所有巡检任务
    List<Task> selectAllTask();

    //按条件查询巡检任务
    List<Task> getTaskByConditionS(TaskVoScw taskVoScw);

    //查询按条件查询的总记录数

    int getTaskCountByConditionS(TaskVoScw taskVoScw);

    //查询所有巡检线路 id

    List<Circuitry> getCircuitryNameAndIdS();

    //查询所有的巡检员

    List<Users> getAllInspectorsS();

    //制定巡检任务
    int addTaskS(TaskVoScw taskVoScw);

    int getTaskOrderByIdS();

    int addTURelationS(TaskVoScw taskVoScw);

    int addTaskPoleRS(TaskVoScw taskVoScw);

    //查询对应线路的所有杆号
    List<Pole> selectPolesByCircuitryIdS(Circuitry circuitry);

    //查询所有所有的任务到分页列表

    List<Task> getAllTasksByPageS(Page page);

    int getTaskTotalCountS(Page page);

    //通过TaskId查询所分配的巡检员
    List<Users> getInspectorsByTaskIdS(int taskId);

    //通过线路Id查询起始杆号Id和终止杆号id
    List<Circuitry> getStartAndEndPoleIdByCircuitryIdS(int circuitryId);

    //修改巡检任务
    int updateTaskS(TaskVoScw taskVoScw);
    //先删除task_user_relation中的记录
    int deleteTaskUserRelS(TaskVoScw taskVoScw);
    //再添加task_user_relation记录
    int addTaskUserRelS(TaskVoScw taskVoScw);
    //删除task_pole_relation中对应的taskId的数据
    int deleteTaskPoleRel2S(TaskVoScw taskVoScw);
    //添加task_pole_relation中的数据
    int addTaskPoleRel2S(TaskVoScw taskVoScw);
    //分配任务
    //添加task_user_relation中taskId对应的数据
    int assignInsertTaskUserRel2S(TaskVoScw taskVoScw);
    //更改taskId相对应的taskState
    int changeTaskStateByTaskIdS(Integer taskId);
    //更改taskId对应的taskState为待分配
    int changeTaskStateUnassigned(Integer taskId);


    //查看任务
    List<CheckTaskStateVoScw> checkMissionSelectTasksS(CheckTaskStateVoScw checkTaskStateVoScw);
    //查看任务/查询巡检员
    //查询该任务下的所有巡检员id
    List<Users> checkSelectInspectorsIdByTaskIdS(Task task);
    //查看任务中显示分配给任务的起始杆id
    int selectStartPoleIdByTaskId(Integer taskId);
    //查看任务中显示分配给任务的终止杆id
    int selectEndPoleIdByTaskId(Integer taskId);


    //通过userId查询名字
    Users checkSelectInspectorsByUserIdS(Users users);
    //查询该任务下对应线路id的startPoleId和endPoleId
    List<Pole> checkSelectPolesBetweenPoleIdS(TaskPoleVoScw taskPoleVoScw);
    //显示杆详情
    List<PoleVoScw>checkSelectPoleInfosS(Pole pole);
    //巡检记录统计按条件查询和分页页面显示
    List<CheckRecordsVoErScw> censusSelectTaskInfoByIdS(CheckRecordsVoScw checkRecordsVoScw);
    //查询记录数
    int censusCountTaskInfoS(CheckRecordsVoScw checkRecordsVoScw);
    //取消任务
    int updateTaskIsCancelS(Task task);

}
